package br.org.acessobrasil.portal.modelo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;

/**
 * Metadata do Conteudo 
 */
@Entity
@Table(name = "sgctb_tipo_conteudo")
public class TipoConteudo implements Serializable {
	private static final long serialVersionUID = -3706865542931270462L;
	@Id
	@GeneratedValue
	private Long nu_tipo_conteudo;
	private String no_tipo_conteudo;
	private String de_tipo_conteudo;
	
	/**
	 * 1 possui 0 nao possui
	 */
	private Integer possuiPreco;
	
	private Long nu_sitio;
	
	//Para nao criar um campo do tipo sitio_nu_sitio
	@ManyToOne
	@JoinColumn(name = "nu_sitio", updatable = false, insertable = false)
	private Sitio sitio;	

	@OrderBy("nu_ordem asc")
	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	@JoinColumn(name = "nu_tipo_conteudo")
	private List<InformacaoTipoConteudo> listInformacaoTipoConteudo = new ArrayList<InformacaoTipoConteudo>();

	@OneToMany(fetch = FetchType.LAZY)
	@JoinColumn(name = "nu_tipo_conteudo")
	private List<Conteudo> listConteudo;
		
	public Long getNuTipoConteudo() {
		return nu_tipo_conteudo;
	}

	public void setNuTipoConteudo(Long nu_tipo_conteudo) {
		this.nu_tipo_conteudo = nu_tipo_conteudo;
	}

	public String getNoTipoConteudo() {
		return no_tipo_conteudo;
	}

	public void setNoTipoConteudo(String no_nome) {
		this.no_tipo_conteudo = no_nome;
	}

	public String getDeTipoConteudo() {
		return de_tipo_conteudo;
	}

	public void setDeTipoConteudo(String de_descricao) {
		this.de_tipo_conteudo = de_descricao;
	}

	public List<InformacaoTipoConteudo> getListInformacaoTipoConteudo() {
		return listInformacaoTipoConteudo;
	}

	public void setListInformacaoTipoConteudo(List<InformacaoTipoConteudo> listInformacaoTipoConteudo) {
		this.listInformacaoTipoConteudo = listInformacaoTipoConteudo;
	}

	public List<Conteudo> getListConteudo() {
		return listConteudo;
	}

	public void setListConteudo(List<Conteudo> listConteudo) {
		this.listConteudo = listConteudo;
	}
	
	public Sitio getSitio() {
		return sitio;
	}

	public void setSitio(Sitio sitio) {
		this.sitio = sitio;
	}
	
	public Long getNuSitio() {
		return nu_sitio;
	}

	public void setNuSitio(Long nu_sitio) {
		this.nu_sitio = nu_sitio;
	}
	
	/**
	 * 
	 * @return 0 se nao possui ou 1 se possui preco
	 */
	public Integer getPossuiPreco() {
		return possuiPreco==null?0:possuiPreco;
	}
	
	/**
	 * 
	 * @param possuiPreco 0 se nao possui ou 1 se possui preco
	 */
	public void setPossuiPreco(Integer possuiPreco) {
		this.possuiPreco = possuiPreco;
	}
}
